<p>The purpose of the <code>Thread.run()</code> and <code>Runnable.run()</code> methods is to execute code in a separate, dedicated thread. Calling those methods directly doesn't make sense because it causes their code to be executed in the current thread. </p>
<p>To get the expected behavior, call the <code>Thread.start()</code> method instead.</p>
<h2>Noncompliant Code Example</h2>

<pre>
Thread myThread = new Thread(runnable);
myThread.run(); // Noncompliant
</pre>
<h2>Compliant Solution</h2>

<pre>
Thread myThread = new Thread(runnable);
myThread.start(); // Compliant
</pre>
<h2>See</h2>

<ul>
<li> <a href="http://cwe.mitre.org/data/definitions/572.html">MITRE, CWE-572</a> - Call to Thread run() instead of start()</li>
<li> <a href="https://www.securecoding.cert.org/confluence/x/KQAiAg">CERT THI00-J</a> - Do not invoke Thread.run()</li>
</ul>

